package map;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * java.util.Map  查找表
 * Map是java集合框架中的1一员，但不是实现了Collection接口!!!
 * Map体现的结构是一个多行两列的表格，其中左列称为key,右列称为value
 * Map总是成对保存数据，并且总是根据key获取对应的value
 * Map要求key不允许重复
 * Map是一个接口,常用的实现类:
 * java..util.HashMap:使用散列算法实现的Map,称为散列表
 * java.util.TreeMap:使用二叉树算法实现的Map
 *
 * HasMap不是线程安全的，还有一个称为Hashtable的类是线程安全的（但不常用了）
 */
public class MapDemo1 {
    public static void main(String[] args) {
        Map<String,Integer> map= new HashMap<>();
        //如果希望遍历Map时的顺序与put顺序一致，可以使用LinkedHashMap
        //Map<String,Integer> map=new LinkedHashMap<>();
        Integer value=map.put("语文",34);
        System.out.println(value);
        map.put("数学",90);
        map.put("物理",80);
        map.put("化学",0);
        value=map.put("语文",100);
        System.out.println(map);
        System.out.println(value);

        value=map.get("语文");
        System.out.println(value);
        value=map.get("数学");
        System.out.println(value);

        int size=map.size();
        System.out.println("size:"+size);//每组键值对算一个元素
        /*
        V remove(Object key)
        删除Map中给定的key对应的这组键值对，返回值为这个key对应的value
         */
        value=map.remove("数学");
        System.out.println("被删除的key对应的value是"+value);
        /*
        boolean containsKey(Object key)
        判断当前Map是否包含给定的key
        boolean containsValue(Object value)
        判断当前Map是否包含给定的value
         */
        boolean ck=map.containsKey("数学");
        System.out.println("是否包含数学1这个key:"+ck);

        boolean cv=map.containsValue(100);
        System.out.println("是否包含99这个value:"+cv);

        map.clear();//清空集合
        System.out.println(map);

    }
}
